package com.mju.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mju.pojo.User;

// 用户模块业务层接口
public interface IUserService {
    /**
     * 用户注册
     * @param user 用户的数据对象
     */
    void registor(User user);

    /**
     * 新版用户注册
     * @param user
     */
    boolean new_registor(User user);

    /**
     * 修改用户状态
     * @param uid
     * @param status
     * @return
     */
    boolean updateStatus(Integer uid,Integer status);

    /**
     * 用户登陆功能
     * @param username 用户名
     * @param password 密码
     * @return 将当前的用户数据，返回。
     */
    User login(String username, String password);

    /**
     * 修改密码功能
     * @param id
     * @param username
     * @param oldPassword
     * @param newPassword
     */
    void changePassword(Integer id,
                        String username,
                        String oldPassword,
                        String newPassword);

    /**
     * 个人资料——根据用户的id，获取用户信息
     * @param id 用户id
     * @return 返回用户数据
     */
    User getById(Integer id);

    /**
     * 个人资料-点击修改按钮的时候，更新数据
     * @param id 在控制层中，通过session获取
     * @param user 要将id传递给user然后返回回去。因为spirngboot只会收集表单的数据。
     */
    void changeInfo(Integer id, User user);

    /**
     * 修改用户的头像
     * @param id 用户id，控制层传过来。
     * @param avatar 用户头像的路径
     * @param username 用户名，控制层传过来。
     */
    void changeAvatar(Integer id,
                      String avatar,
                      String username);


    // 分页查询全部用户信息(无条件)
    IPage<User> queryAllUsers(Integer currentPage,Integer pageSize);


    // 删除用户
    Integer deleteUserByUid(Integer uid);

    // 添加用户
    Integer addUser(User user);

    //修改是否VIP和会员名称
    Integer updateIsVipAndVipName(Integer uid, Integer status, String vipName);

    //修改是否VIP
    Integer updateIsVip(Integer uid, Integer status);

    // 根据用户名获取用户id
    Integer getUidByUname(String uname);

    // 后台管理：修改用户信息(根据uid)
    Integer updateUser(Integer uid, User user);

    // 后台：重置密码
    void resetPassword(Integer uid);
}
